﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;

using CSP.MembershipInterface.ObjectModel;

namespace CSP.MembershipInterface
{

    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
    public interface IMembershipServiceContractChannel : IMembershipServiceContract, System.ServiceModel.IClientChannel
    {
    }
    [ServiceContract]
    public interface IMembershipServiceContract
    {
        [OperationContract]
        CaseType[] GetCaseTypes();

        [OperationContract]
        CaseType GetCaseTypeByName(string name);

        [OperationContract]
        string AddCase(Case crmCase);

        [OperationContract]
        void UpdateCase(Case crmCase);

        [OperationContract]
        void UpdateCaseSatisfaction(string caseID, int satisfaction);

        [OperationContract]
        Case[] GetCases();

        [OperationContract]
        Case[] GetCasesByCaseType(CaseType caseType);

        [OperationContract]
        Case[] GetCasesByCaseRoleType(CaseRoleType caseRoleType);

        [OperationContract]
        Case[] GetCasesByCaseStatus(CaseStatus caseStatus);

        [OperationContract]
        CaseStatus[] GetCaseStatus();

        [OperationContract]
        CaseStatus GetInitialCaseStatus();

        [OperationContract]
        CaseRoleType GetInitialCaseRoleType();

        [OperationContract]
        CaseStatus GetCaseStatusByCaseStatusID(int caseStatusID);

        [OperationContract]
        Case GetCaseByCaseID(string caseID);

        [OperationContract]
        Case[] GetCasesByCitizenID(string username);

        [OperationContract]
        void AddCitizenRequest(CitizenRequest citizenRequest);

        [OperationContract]
        void ApproveCitizenRequest(string username);

        [OperationContract]
        void DenyCitizenRequest(string username);

        [OperationContract]
        Citizen[] GetCitizens();

        [OperationContract]
        Citizen GetCitizenByUsername(string username);

        [OperationContract]
        [ServiceKnownType(typeof(CitizenRequest[]))]
        CitizenRequest[] GetCitizenRequests();

        [OperationContract]
        CitizenRequest GetCitizenRequestByUsername(string username);

    }
}
